
/*
 * @Description: File
 * @Author: rendc
 * @Date: 2024-10-14 08:40:11
 * @LastEditors: rendc
 * @LastEditTime: 2024-10-14 09:56:53
 */
/**
 * Test01
 */
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class Test01 {

  public static void main(String[] args) {
    // 创建文件路径名 - Win的路径
    // String pathName = "C:\\Users\\cc\\Desktop\\test.txt";
    String pathName = "/Users/cc/Desktop/Java/day32/test.txt";
    File file = new File(pathName);
    System.out.println("File: " + file);
    // 获取路径
    System.out.println("文件的绝对路径：" + file.getAbsolutePath());
    System.out.println("文件的路径：" + file.getPath());
    // 获取文件名
    System.out.println("文件的名字：" + file.getName());
    File file2 = new File("Test01.java");
    System.out.println("文件的绝对路径：" + file2.getAbsolutePath());
    System.out.println("文件的length：" + file2.length() + "字节");
    File file3 = new File("/Users/cc/Desktop/Java/day32");
    System.out.println("目录的绝对路径：" + file3.getAbsolutePath());
    System.out.println("目录的名字：" + file3.getName());
    System.out.println("目录的length：" + file3.length() + "字节");
    // 判断是否是目录(文件夹)
    System.out.println("file2是不是文件夹" + file2.isDirectory());
    // 判断是否是文件
    System.out.println("file2是不是文件" + file2.isFile());
    // 创建一个文件时 考虑文件名是否冲突 判断文件是否存在
    System.out.println("file2存在吗" + file2.exists());
    System.out.println("file存在吗" + file.exists());
    // 创建文件
    if (file.exists()) {
      // 判断文件是否已经存在
      System.out.println("文件：" + file.getName() + "已经存在，请勿重复创建");
    } else {
      // 文件不存在，可以创建
      try {
        // 这一步操作有可能引发异常
        file.createNewFile();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    // 创建文件夹
    String pathName4 = "/Users/cc/Desktop/Java/day32Test";
    File file4 = new File(pathName4);
    // file2.isDirectory();
    // 判断目录是否存在
    if (file4.exists()) {
      // 判断文件是否已经存在
      System.out.println("目录：" + file4.getName() + "已经存在，请勿重复创建");
    } else {
      // 目录不存在，可以创建
      file4.mkdir();
    }
    // 创建文件夹2
    String pathName5 = "/Users/cc/Desktop/Java/day32Test01/Test01";
    File file5 = new File(pathName5);
    // file2.isDirectory();
    // 判断目录是否存在
    if (file5.exists()) {
      // 判断文件是否已经存在
      System.out.println("目录：" + file5.getName() + "已经存在，请勿重复创建");
    } else {
      // 目录不存在，可以创建
      file5.mkdirs(); // 级联目录的创建
    }
    String pathName6 = "/Users/cc/Desktop/Java/day32/test2.txt";
    File file6 = new File(pathName6);
    // 文件或者目录的删除
    file5.delete();
    file6.delete();
    // 目录中文件的遍历
    // 获取 /day32
    String pathName7 = "/Users/cc/Desktop/Java/day32";
    File file7 = new File(pathName7);
    // 获取目录中的子文件并遍历输出文件名
    String[] list = file7.list();
    for (String string : list) {
      System.out.println(string);
    }
    // 获取目录中的子文件并遍历输出文件对象
    File[] list2 = file7.listFiles();
    for (File files : list2) {
      System.out.println(files);
    }
    // 获取目录中的所有子文件
    File[] list3 = file7.listFiles(new FileFilter() {
      @Override
      public boolean accept(File file) {
        if (file.isFile()) {
          return true;
        }
        return false;
      }
    });
    for (File files : list3) {
      System.out.println(files.getName());
    }
  }
}